/**
 * 菜单相关类型定义
 */
export namespace MenuApi {
  export interface MenuVO {
    /**
     * ID
     */
    id: number;

    /**
     * 上级菜单ID，0表示根目录
     */
    parentId: number;

    /**
     * 菜单类型：M-目录，C-菜单，F-按钮
     */
    menuType: string;

    /**
     * 菜单名称
     */
    menuName: string;

    /**
     * 菜单图标（仅目录/菜单用）
     */
    icon: string;

    /**
     * 显示排序
     */
    sort: number;

    /**
     * 路由地址（目录/菜单用，如 /system/user）
     */
    routePath: string;

    /**
     * 组件路径（仅菜单用，如 /views/system/user/index）
     */
    componentPath: string;

    /**
     * 是否外链：0-否，1-是
     */
    isExternal: number;

    /**
     * 是否显示：0-隐藏，1-显示
     */
    isShow: number;

    /**
     * 菜单状态：1-正常，2-停用
     */
    status: number;

    /**
     * 权限标识（按钮/菜单用，如 system:user:add）
     */
    perms: string;

    /**
     * 路由参数（JSON格式，选填）
     */
    routeParams: string;

    /**
     * 是否缓存（仅菜单用）
     */
    isCache: number;

    /**
     * 创建时间
     */
    createTime: string;

    /**
     * 更新时间
     */
    updateTime: string;
  }

  export interface MenuTree extends MenuVO {
    /**
     * 子菜单
     */
    children: MenuTree[];
  }

  /**
   * 创建菜单请求参数
   */
  export interface CreateMenuParam {
    parentId: number;
    menuName: string;
    menuType: string;
    sort: number;
    routePath: string;
    componentPath: string;
    isExternal: number; // 0或1，表示是否为外部链接
    isShow: number; // 0或1，表示是否显示
    status: number; // 菜单状态
    perms: string; // 权限标识
    routeParams: string; // 路由参数
    isCache: number; // 0或1，表示是否缓存
    icon: string; // 图标
  }
}
